import { IPSAppLan } from './ipsapp-lan';
import { IPSAppMethodDTO } from './ipsapp-method-dto';
import { IPSAppResource } from './ipsapp-resource';
import { IPSAppUtilPage } from './ipsapp-util-page';
import { IPSApplicationLogic } from './ipsapplication-logic';
import { IPSSubAppRef } from './ipssub-app-ref';
import { IPSAppMenuModel } from './appmenu/ipsapp-menu-model';
import { IPSAppCodeList } from './codelist/ipsapp-code-list';
import { IPSAppPortlet } from './control/ipsapp-portlet';
import { IPSAppPortletCat } from './control/ipsapp-portlet-cat';
import { IPSAppDERS } from './dataentity/ipsapp-ders';
import { IPSAppDEUIAction } from './dataentity/ipsapp-deuiaction';
import { IPSAppDataEntity } from './dataentity/ipsapp-data-entity';
import { IPSAppFunc } from './func/ipsapp-func';
import { IPSAppUILogic } from './logic/ipsapp-uilogic';
import { IPSAppMsgTempl } from './msg/ipsapp-msg-templ';
import { IPSAppPFPluginRef } from './res/ipsapp-pfplugin-ref';
import { IPSAppUITheme } from './theme/ipsapp-uitheme';
import { IPSAppUtil } from './util/ipsapp-util';
import { IPSAppIndexView } from './view/ipsapp-index-view';
import { IPSAppView } from './view/ipsapp-view';
import { IPSAppViewMsg } from './view/ipsapp-view-msg';
import { IPSAppViewMsgGroup } from './view/ipsapp-view-msg-group';
import { IPSAppWF } from './wf/ipsapp-wf';
import { IPSDEOPPriv } from '../dataentity/priv/ipsdeoppriv';
import { IPSModelObject } from '../ipsmodel-object';

/**
 *
 * @export
 * @interface IPSApplication
 */
export interface IPSApplication extends IPSModelObject {
  getAllAccessKeys(): string[] | null;

  /**
   * 应用代码表集合
   *
   * @type {IPSAppCodeList[]}
   */
  getAllPSAppCodeLists(): IPSAppCodeList[] | null;

  findPSAppCodeList(objKey: any): IPSAppCodeList | null;

  /**
   * 应用实体关系集合
   *
   * @type {IPSAppDERS[]}
   */
  getAllPSAppDERSs(): IPSAppDERS[] | null;

  findPSAppDERS(objKey: any): IPSAppDERS | null;

  /**
   * 应用界面行为集合
   *
   * @type {IPSAppDEUIAction[]}
   */
  getAllPSAppDEUIActions(): IPSAppDEUIAction[] | null;

  findPSAppDEUIAction(objKey: any): IPSAppDEUIAction | null;

  /**
   * 应用实体集合
   *
   * @type {IPSAppDataEntity[]}
   */
  getAllPSAppDataEntities(): IPSAppDataEntity[] | null;

  findPSAppDataEntity(objKey: any): IPSAppDataEntity | null;

  /**
   * 应用功能集合
   *
   * @type {IPSAppFunc[]}
   */
  getAllPSAppFuncs(): IPSAppFunc[] | null;

  findPSAppFunc(objKey: any): IPSAppFunc | null;

  /**
   * 应用语言集合
   *
   * @type {IPSAppLan[]}
   */
  getAllPSAppLans(): IPSAppLan[] | null;

  findPSAppLan(objKey: any): IPSAppLan | null;

  /**
   * 应用菜单模型集合
   *
   * @type {IPSAppMenuModel[]}
   */
  getAllPSAppMenuModels(): IPSAppMenuModel[] | null;

  findPSAppMenuModel(objKey: any): IPSAppMenuModel | null;

  /**
   * 应用方法DTO集合
   *
   * @type {IPSAppMethodDTO[]}
   */
  getAllPSAppMethodDTOs(): IPSAppMethodDTO[] | null;

  findPSAppMethodDTO(objKey: any): IPSAppMethodDTO | null;

  /**
   * 应用消息模板集合
   *
   * @type {IPSAppMsgTempl[]}
   */
  getAllPSAppMsgTempls(): IPSAppMsgTempl[] | null;

  findPSAppMsgTempl(objKey: any): IPSAppMsgTempl | null;

  /**
   * 应用前端模板插件引用集合
   *
   * @type {IPSAppPFPluginRef[]}
   */
  getAllPSAppPFPluginRefs(): IPSAppPFPluginRef[] | null;

  findPSAppPFPluginRef(objKey: any): IPSAppPFPluginRef | null;

  /**
   * 应用门户部件分类集合
   *
   * @type {IPSAppPortletCat[]}
   */
  getAllPSAppPortletCats(): IPSAppPortletCat[] | null;

  findPSAppPortletCat(objKey: any): IPSAppPortletCat | null;

  /**
   * 应用门户部件集合
   *
   * @type {IPSAppPortlet[]}
   */
  getAllPSAppPortlets(): IPSAppPortlet[] | null;

  findPSAppPortlet(objKey: any): IPSAppPortlet | null;

  /**
   * 应用预置资源集合
   *
   * @type {IPSAppResource[]}
   */
  getAllPSAppResources(): IPSAppResource[] | null;

  findPSAppResource(objKey: any): IPSAppResource | null;

  /**
   * 应用预置界面逻辑集合
   *
   * @type {IPSAppUILogic[]}
   */
  getAllPSAppUILogics(): IPSAppUILogic[] | null;

  findPSAppUILogic(objKey: any): IPSAppUILogic | null;

  /**
   * 应用界面主题集合
   *
   * @type {IPSAppUITheme[]}
   */
  getAllPSAppUIThemes(): IPSAppUITheme[] | null;

  findPSAppUITheme(objKey: any): IPSAppUITheme | null;

  /**
   * 应用功能页面集合
   *
   * @type {IPSAppUtilPage[]}
   */
  getAllPSAppUtilPages(): IPSAppUtilPage[] | null;

  findPSAppUtilPage(objKey: any): IPSAppUtilPage | null;

  /**
   * 应用功能组件集合
   *
   * @type {IPSAppUtil[]}
   */
  getAllPSAppUtils(): IPSAppUtil[] | null;

  findPSAppUtil(objKey: any): IPSAppUtil | null;

  /**
   * 应用视图消息组集合
   *
   * @type {IPSAppViewMsgGroup[]}
   */
  getAllPSAppViewMsgGroups(): IPSAppViewMsgGroup[] | null;

  findPSAppViewMsgGroup(objKey: any): IPSAppViewMsgGroup | null;

  /**
   * 应用视图消息集合
   *
   * @type {IPSAppViewMsg[]}
   */
  getAllPSAppViewMsgs(): IPSAppViewMsg[] | null;

  findPSAppViewMsg(objKey: any): IPSAppViewMsg | null;

  /**
   * 应用视图集合
   *
   * @type {IPSAppView[]}
   */
  getAllPSAppViews(): IPSAppView[] | null;

  findPSAppView(objKey: any): IPSAppView | null;

  /**
   * 应用工作流集合
   *
   * @type {IPSAppWF[]}
   */
  getAllPSAppWFs(): IPSAppWF[] | null;

  findPSAppWF(objKey: any): IPSAppWF | null;

  /**
   * 全局实体操作标识集合
   *
   * @type {IPSDEOPPriv[]}
   */
  getAllPSDEOPPrivs(): IPSDEOPPriv[] | null;

  findPSDEOPPriv(objKey: any): IPSDEOPPriv | null;

  /**
   * 子应用引用集合
   *
   * @type {IPSSubAppRef[]}
   */
  getAllPSSubAppRefs(): IPSSubAppRef[] | null;

  findPSSubAppRef(objKey: any): IPSSubAppRef | null;

  /**
   * 应用目录名称
   * @type {string}
   */
  appFolder: string;

  /**
   * 应用模式
   * @description 值模式 [应用模式] {DEFAULT：默认应用、 CLOUDHUBAPP：Cloud集成应用、 CLOUDHUBSUBAPP：Cloud集成子应用、 WFAPP：工作流应用、 USER：用户自定义、 USER2：用户自定义2、 USER3：用户自定义3、 USER4：用户自定义4 }
   * @type {( string | 'DEFAULT' | 'CLOUDHUBAPP' | 'CLOUDHUBSUBAPP' | 'WFAPP' | 'USER' | 'USER2' | 'USER3' | 'USER4')}
   */
  appMode:
    | string
    | 'DEFAULT'
    | 'CLOUDHUBAPP'
    | 'CLOUDHUBSUBAPP'
    | 'WFAPP'
    | 'USER'
    | 'USER2'
    | 'USER3'
    | 'USER4';

  /**
   * 应用标记
   * @type {string}
   */
  appTag: string;

  /**
   * 应用标记2
   * @type {string}
   */
  appTag2: string;

  /**
   * 应用标记3
   * @type {string}
   */
  appTag3: string;

  /**
   * 应用标记4
   * @type {string}
   */
  appTag4: string;

  /**
   * 应用版本
   * @type {string}
   */
  appVersion: string;

  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 默认应用
   * @type {boolean}
   */
  defaultFlag: boolean;

  /**
   * 启动首页视图
   *
   * @type {IPSAppIndexView}
   */
  getDefaultPSAppIndexView(): IPSAppIndexView | null;

  /**
   * 模型引擎版本
   * @type {number}
   */
  engineVer: number;

  /**
   * 前端模板样式
   * @type {string}
   */
  pFStyle: string;

  /**
   * 前端模板
   * @type {string}
   */
  pFType: string;

  /**
   * 代码包名称
   * @type {string}
   */
  pKGCodeName: string;

  /**
   * 应用预载逻辑集合
   *
   * @type {IPSApplicationLogic[]}
   */
  getPSApplicationLogics(): IPSApplicationLogic[] | null;

  findPSApplicationLogic(objKey: any): IPSApplicationLogic | null;

  /**
   * 服务代码名称
   * @type {string}
   */
  serviceCodeName: string;

  /**
   * 系统代码标识
   * @type {string}
   */
  sysCodeName: string;

  /**
   * 启用服务接口DTO
   * @type {boolean}
   * @default false
   */
  enableServiceAPIDTO: boolean;

  /**
   * 启用统一认证登录
   * @type {boolean}
   */
  enableUACLogin: boolean;

  /**
   * 启用界面模型增强
   * @type {boolean}
   * @default false
   */
  enableUIModelEx: boolean;

  /**
   * 移动端应用
   * @type {boolean}
   */
  mobileApp: boolean;

  /**
   * 使用服务接口
   * @type {boolean}
   */
  useServiceApi: boolean;

  /**
   * 流程应用模式
   * @type {boolean}
   */
  wFAppMode: boolean;
}
